<?php

/**
 * 用户表模型
 *
 * @author jiang
 */

namespace Kj\Admin\Models;

use Kj\Admin\Models\Base;
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Base implements UserInterface, RemindableInterface
{

    use UserTrait, RemindableTrait;

    /**
     * 用户数据表名
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password');
    
    /**
     * 可以被集体附值的表的字段
     *
     * @var string
     */
    protected $fillable = array('id', 'name', 'password', 'group_id', 'realname', 'token',
                                'add_time', 'modify_time', 'mobile', 'status', 'mark',
                                'last_login_ip', 'last_login_time'
                            );

    /**
     * 取得用户表中的主键，即用户的唯一ID
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * 返回用户的密码，如果自己的表中的字段和laravel框架的默认的password的不一致的时候可以重新指定。
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->password;
    }

    /**
     * laravel框架默认退出的时候会更新用户表中的remember_token字段
     * 如果没有这个字段，那么在这里重新指定它。
     *
     * @return string
     */
    public function getRememberTokenName()
    {
        return 'token';
    }
    
    /**
     * 取得所有的用户
     *
     * @return array
     */
    public function getAllUser($groupId = null)
    {
        $query = $this->leftJoin('group', 'users.group_id', '=', 'group.id');
        if($groupId) $query->where('users.group_id', '=', intval($groupId));
        $this->currentQuery = $query->select(array('*','users.id as id'))->orderBy('users.id', 'desc')->paginate($this->perpage);
        $info = $this->currentQuery->toArray();
        return $info['data'];
    }

    /**
     * 增加用户
     * 
     * @param array $data 所需要插入的信息
     */
    public function addUser(array $data)
    {
        return $this->create($data);
    }
    
    /**
     * 修改用户
     * 
     * @param array $data 所需要插入的信息
     */
    public function editUser(array $data, $id)
    {
        return $this->where('id', '=', intval($id))->update($data);
    }
    
    /**
     * 删除用户
     * 
     * @param array $id 权限功能的ID
     */
    public function deleteUser(array $ids)
    {
        return $this->destroy($ids);
    }
    
    /**
     * 取得指定ID用户信息
     * 
     * @param intval $id 用户的ID
     * @return array
     */
    public function getOneUserById($id)
    {
        return $this->where('id', '=', intval($id))->first();
    }
    
    /**
     * 取得指定用户名的信息
     * 
     * @param string $name 用户名
     * @return array
     */
    public function getOneUserByName($name)
    {
        return $this->where('name', '=', $name)->first();
    }

}
